package com.smart.community.commons.vo.property;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 物业信息视图对象
 * @author Wu.Liang
 * @since 2024-12-19
 * @version 2.0.0 - 合并property模块的PropertyInfoVO，统一使用
 */
@Data
@Schema(description = "物业信息视图对象")
public class PropertyInfoVO {
    
    /**
     * 物业公司ID
     */
    @Schema(description = "物业公司ID")
    private Long propertyCompanyId;
    
    /**
     * 物业公司名称
     */
    @Schema(description = "物业公司名称")
    private String companyName;
    
    /**
     * 物业公司编码
     */
    @Schema(description = "物业公司编码")
    private String companyCode;
    
    /**
     * 统一社会信用代码
     */
    @Schema(description = "统一社会信用代码")
    private String creditCode;
    
    /**
     * 法定代表人
     */
    @Schema(description = "法定代表人")
    private String legalRepresentative;
    
    /**
     * 联系电话
     */
    @Schema(description = "联系电话")
    private String contactPhone;
    
    /**
     * 联系邮箱
     */
    @Schema(description = "联系邮箱")
    private String contactEmail;
    
    /**
     * 公司邮箱
     */
    @Schema(description = "公司邮箱")
    private String email;
    
    /**
     * 公司地址
     */
    @Schema(description = "公司地址")
    private String address;
    
    /**
     * 公司简介
     */
    @Schema(description = "公司简介")
    private String description;
    
    /**
     * 营业执照号
     */
    @Schema(description = "营业执照号")
    private String businessLicense;
    
    /**
     * 成立时间
     */
    @Schema(description = "成立时间")
    private LocalDate establishedDate;
    
    /**
     * 注册资本（万元）
     */
    @Schema(description = "注册资本（万元）")
    private BigDecimal registeredCapital;
    
    /**
     * 资质等级
     */
    @Schema(description = "资质等级")
    private String qualificationLevel;
    
    /**
     * 联系人
     */
    @Schema(description = "联系人")
    private String contactPerson;
    
    /**
     * 营业时间
     */
    @Schema(description = "营业时间")
    private String businessHours;
    
    /**
     * 服务热线
     */
    @Schema(description = "服务热线")
    private String serviceHotline;
    
    /**
     * 服务范围
     */
    @Schema(description = "服务范围")
    private String serviceScope;
    
    /**
     * 服务区域
     */
    @Schema(description = "服务区域")
    private String serviceArea;
    
    /**
     * 服务社区数量
     */
    @Schema(description = "服务社区数量")
    private Integer serviceCommunityCount;
    
    /**
     * 服务户数
     */
    @Schema(description = "服务户数")
    private Integer serviceHouseholdCount;
    
    /**
     * 服务面积
     */
    @Schema(description = "服务面积")
    private BigDecimal serviceAreaSize;
    
    /**
     * 支付账户
     */
    @Schema(description = "支付账户")
    private String paymentAccount;
    
    /**
     * 开户银行
     */
    @Schema(description = "开户银行")
    private String paymentBank;
    
    /**
     * 在线支付链接
     */
    @Schema(description = "在线支付链接")
    private String paymentLink;
    
    /**
     * 微信支付商户号
     */
    @Schema(description = "微信支付商户号")
    private String wechatPayMerchantId;
    
    /**
     * 支付宝商户号
     */
    @Schema(description = "支付宝商户号")
    private String alipayMerchantId;
    
    /**
     * 公司Logo
     */
    @Schema(description = "公司Logo")
    private String companyLogo;
    
    /**
     * 收款二维码
     */
    @Schema(description = "收款二维码")
    private String paymentQrCode;
    
    /**
     * 公司图片列表
     */
    @Schema(description = "公司图片列表")
    private List<String> companyImages;
    
    /**
     * 备注
     */
    @Schema(description = "备注")
    private String remark;
    
    /**
     * 公司状态（1-正常，0-停用）
     */
    @Schema(description = "公司状态（1-正常，0-停用）")
    private Integer status;
    
    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    private LocalDateTime updateTime;
    
    /**
     * 创建人
     */
    @Schema(description = "创建人")
    private String createBy;
    
    /**
     * 更新人
     */
    @Schema(description = "更新人")
    private String updateBy;
}
